﻿using System;
using System.Linq;
using System.Web.Mvc;
using Controller2.BLL;
using Controller2.Models;

namespace Controller2.Controllers
{
    [Authorize]
    public class EmpresaController : Controller
    {
        #region ViewModels
        ControllerBDModelContainer db = new ControllerBDModelContainer();
        //EmpresaViewModel viewModel = new EmpresaViewModel();
        #endregion

        #region Index
        [Authorize]
        public ActionResult Index() // Index padrão
        {
            ViewBag.IsInRole = User.IsInRole("SysAdmin") || User.IsInRole("Administrador") || User.IsInRole("Gerente") ? true : false;
            var model = EmpresaBll.GetEmpresa(db, 1);
            if (model != null)
            {               
				model.IdEstado = model.Cidade.IdEstado;
				ViewBag.Estado = new SelectList(db.Estado.ToList(), "IdEstado", "NomeEstado", model.IdEstado);
				ViewBag.Cidade = new SelectList(db.Cidade.Where(c => c.IdEstado == model.Cidade.IdEstado), "IdCidade", "NomeCidade", model.IdCidade);                
            }
            else
            {
				model = new Empresa();
                ViewBag.Estado = new SelectList(EstadoBll.GetAllEstados(db), "IdEstado", "NomeEstado");
                ViewBag.Cidade = new SelectList(CidadeBll.GetCidadesPorEstado(db, model.IdEstado), "IdCidade", "NomeCidade");
				model.DataAbertura = DateTime.Now;
            }
            return View(model);
        }
        #endregion

        #region Salvar
        [Authorize]
        [HttpPost]
        public ActionResult Salvar(Empresa modelView) // Método de gravação do registro
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (modelView.IdEmpresa > 0)
                    {
                        var model = EmpresaBll.GetEmpresa(db, modelView.IdEmpresa);
                        TryUpdateModel(model);
                        db.Empresa.ApplyCurrentValues(model);
                    }
                    else
                    {
                        var model = new Empresa();
                        TryUpdateModel(model);
                        db.Empresa.AddObject(model);
                    }
                    db.SaveChanges();
                    return RedirectToAction("Index", "Home");
                }
                catch
                {
                    return View(modelView);
                }
            }
            else
            {
                return View(modelView);
            }
        }
        #endregion

        #region Auxiliares
        [Authorize(Roles = "SysAdmin, Administrador, Gerente, DiretorArte")]
        [HttpPost]
        public JsonResult CarregarComboCidade(int idEstado)
        {
            var cidade = CidadeBll.GetCidadesPorEstado(db, idEstado);
            return new JsonResult { Data = new SelectList(cidade.ToList(), "IdCidade", "NomeCidade") };
        }
        #endregion
    }
}
